<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
  <meta charset="utf-8">
  <title>rsync基本使用方法 &mdash; cat writebug.cn/history</title>
  <meta name="author" content="zhiliao">
  <meta name="description" content="rsync基本使用方法" />

  <meta name="keywords" content="开发者,程序,博客园,程序猿,程序媛,极客,码农,编程,代码,软件开发,开源,IT网站,技术社区,Developer,Programmer,Coder,Geek,Coding,Code,writebug,bug,写bug,linux,vim,编程语言,调试" />

  <link href="/feeds/all.atom.xml" type="application/rss+xml" rel="alternate"
        title="cat writebug.cn/history RSS Feed" />





  <!-- http://t.co/dKP3o1e -->
  <meta name="HandheldFriendly" content="True">
  <meta name="MobileOptimized" content="320">
  <meta name="viewport" content="width=device-width, initial-scale=1">


    <link href="/favicon.png" rel="icon">

  <link href="/theme/css/main.css" media="screen, projection"
        rel="stylesheet" type="text/css">
  <link href="/theme/css/pygment.css" rel="stylesheet" type="text/css">

  <!--
  <link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic"
        rel="stylesheet" type="text/css">
  <link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic"
        rel="stylesheet" type="text/css">
  -->


  <script src="/theme/js/modernizr-2.0.js"></script>
  <script src="/theme/js/ender.js"></script>
  <script src="/theme/js/octopress.js" type="text/javascript"></script>
</head>

<body >
  <header role="banner"
  >
<hgroup>
  <h1><a href="/">cat writebug.cn/history</a></h1>
    <h2>一个开发者的技术博客。</h2>
</hgroup></header>
  <nav role="navigation"><ul class="subscription" data-subscription="rss">
  <li><a href="/feeds/all.atom.xml" rel="subscribe-rss">RSS</a></li>
</ul>


<ul class="main-navigation">
    <li><a href="/">Home</a></li>
    <li><a href="/archives.html">Archive</a></li>
    <li><a href="/pages/todolist.html">TodoList</a></li>
    <li><a href="/pages/about.html">About</a></li>
</ul></nav>
  <div id="main">
    <div id="content">
<div>
  <article class="hentry" role="article">
<header>
      <h1 class="entry-title">rsync基本使用方法</h1>
    <p class="meta">
<time datetime="2023-07-31T01:29:08+08:00" pubdate>2023-07-31 01:29:08</time>      
    </p>
</header>

    <div class="entry-content"><h2>rsync介绍</h2>
<p>rsync是快速和通用的远程和本地文件同步工具。</p>
<p>支持通过远程shell或者rsnyc守护进程进行同步。经常用作备份和镜像的工具。<strong>使用远程shell同步时，rsync必须同时安装在源机器和目标机器上。</strong></p>
<p><strong>rsync 默认使用文件大小和修改时间决定文件是否需要更新。</strong></p>
<p>支持拷贝连接，设备，所有者，组和权限。支持排除指定的文件进行同步。 支持匿名也支持身份认证的文件同步。</p>
<p>rsnyc支持本地和远程之间同步，也支持本地不同目录同步。</p>
<h2>rsync用法</h2>
<p>一个冒号的是ssh协议
两个冒号或rsync://开头是rsync协议，两者等价</p>
<h3>本地</h3>
<ul>
<li>rsync [OPTION...] SRC... [DEST]</li>
</ul>
<h3>远程push</h3>
<ul>
<li>rsync [OPTION...] [USER@]HOST:SRC... [DEST]</li>
<li>rsync [OPTION...] [USER@]HOST::SRC... [DEST]</li>
<li>sync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]</li>
</ul>
<h3>远程pull</h3>
<ul>
<li>rsync [OPTION...] SRC... [USER@]HOST:DEST</li>
<li>rsync [OPTION...] SRC... [USER@]HOST::DEST</li>
<li>rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST</li>
</ul>
<h2>常见用法</h2>
<blockquote>
<p>rsync -av  --delete root@git.local:/root/repo/  ~/workspace/</p>
</blockquote>
<ul>
<li><strong>理解SRC结尾的/， 如果不带/， 则把repo目录放到workspace下面，如果带上/则吧repo目录里面的文件同步到workspace下。</strong></li>
</ul>
<blockquote>
<p>rsync -rtNlHv  --progress --delete --block-size=8192  rsync://cdimage.debian.org/debian-cd/   ~/debian-cd/
同步debian-cd源，-rtNlHv  --progress --delete --block-size=8192 参数依次分别是：递归，同步（mtime），同步创建时间（birth），保留软连接，保留硬连接，输出细节，显示进度，在目标中删除源中没有的文件。 --block-size=8192是为了优化性能。</p>
<p>其实也可以简写为<code>rsync -aNHlv  --progress --delete rsync://cdimage.debian.org/debian-cd/   ~/debian-cd/</code> # 这样会多同步文件属主属组等。（看手册是这样，没验证）</p>
</blockquote>
<h2>常用参数</h2>
<ul>
<li>-r 表示递归，即包含子目录。注意，同步目录递归是必须的。</li>
<li>−t  这个命令告诉rsync将修改时间与文件一起传输。</li>
<li><strong>-a参数可以替代-r，除了可以递归同步以外，还可以同步元信息（比如修改时间、权限等），支持设备文件，保留符号连接。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新，所以-a比-r更有用。-a是常见用法。</strong> </li>
<li>-a 相当于 -rlptgoD，分别代表递归，使用软连接同步软连接，同步权限，同步修改时间，同步文件群组， 同步文件属主，同步设备文件。</li>
<li><strong>-c、--checksum参数改变rsync的校验方式。默认情况下，rsync 只检查文件的大小和最后修改日期是否发生变化，如果发生变化，就重新传输；使用这个参数以后，则通过判断文件内容的校验和，决定是否重新传输。</strong></li>
<li><strong>--delete参数删除只存在于目标目录、不存在于源目标的文件，即保证目标目录是源目标的镜像。</strong></li>
<li><strong>−−crtimes, −N, 将目标文件的创建时间设置为与源文件相同的值。</strong></li>
<li>--exclude参数指定排除不进行同步的文件，比如--exclude="*.iso"。</li>
<li>--exclude-from参数指定一个本地文件，里面是需要排除的文件模式，每个模式一行。</li>
<li>--existing、--ignore-non-existing参数表示不同步目标目录中不存在的文件和目录。</li>
<li>-h参数表示以人类可读的格式输出。</li>
<li>--hard-links, -H 保留硬连接。</li>
<li>--links, -l 保留符号链接</li>
<li>--ignore-existing参数表示只要该文件在目标目录中已经存在，就跳过去，不再同步这些文件。</li>
<li>--include参数指定同步时要包括的文件，一般与--exclude结合使用。</li>
<li>--link-dest参数指定增量备份的基准目录。</li>
<li>-m参数指定不同步空目录。</li>
<li>-n参数或--dry-run参数模拟将要执行的操作，而并不真的执行。配合-v参数使用，可以看到哪些内容会被同步过去。</li>
<li><strong>--progress参数表示显示进展。</strong></li>
<li>--remove-source-files参数表示传输成功后，删除发送方的文件。</li>
<li>--size-only参数表示只同步大小有变化的文件，不考虑文件修改时间的差异。</li>
<li>-v参数表示输出细节。-vv表示输出更详细的信息，-vvv表示输出最详细的信息。</li>
<li><strong>-z参数指定同步时压缩数据。</strong></li>
</ul>
<h3>防止误删文件</h3>
<ul>
<li><strong>-u、--update参数表示同步时跳过目标目录中修改时间更新的文件，即不同步这些有更新的时间戳的文件。</strong></li>
<li>-b、--backup参数指定在删除或更新目标目录已经存在的文件时，将该文件更名后进行备份，默认行为是删除。更名规则是添加由--suffix参数指定的文件后缀名，默认是~。</li>
<li>--backup-dir参数指定文件备份时存放的目录，比如--backup-dir=/path/to/backups。</li>
<li>--ignore-existing参数表示只要该文件在目标目录中已经存在，就跳过去，不再同步这些文件。</li>
</ul>
<h3>继续传输</h3>
<ul>
<li>--append参数指定文件接着上次中断的地方，继续传输。</li>
<li>--append-verify参数跟--append参数类似，但会对传输完成后的文件进行一次校验。如果校验失败，将重新发送整个文件。</li>
<li>-P参数是--progress和--partial这两个参数的结合。</li>
<li>---partial参数允许恢复中断的传输。不使用该参数时，rsync会删除传输到一半被打断的文件；使用该参数后，传输到一半的文件也会同步到目标目录，下次同步时再恢复中断的传输。一般需要与--append或--append-verify配合使用。</li>
<li>--partial-dir参数指定将传输到一半的文件保存到一个临时目录，比如--partial-dir=.rsync-partial。一般需要与--append或--append-verify配合使用。</li>
</ul>
<h2>增量备份</h2>
<p>rsync 的最大特点就是它可以完成增量备份，也就是默认只复制有变动的文件。</p>
<p>除了源目录与目标目录直接比较，rsync 还支持使用基准目录，即将源目录与基准目录之间变动的部分，同步到目标目录。</p>
<p>具体做法是，第一次同步是全量备份，所有文件在基准目录里面同步一份。以后每一次同步都是增量备份，只同步源目录与基准目录之间有变动的部分，将这部分保存在一个新的目标目录。这个新的目标目录之中，也是包含所有文件，但实际上，只有那些变动过的文件是存在于该目录，其他没有变动的文件都是指向基准目录文件的硬链接。</p>
<p><code>--link-dest参数用来指定同步时的基准目录。</code></p>
<blockquote>
<p>$ rsync -a --delete --link-dest /compare/path /source/path /target/path</p>
</blockquote>
<p>上面命令中，--link-dest参数指定基准目录/compare/path，然后源目录/source/path跟基准目录进行比较，找出变动的文件，将它们拷贝到目标目录/target/path。那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量备份，后面就都是增量备份了。</p></div>
    <footer>
<p class="meta">
  <span class="byline author vcard">
    Posted by <span class="fn">
        zhiliao
    </span>
  </span>
<time datetime="2023-07-31T01:29:08+08:00" pubdate>2023-07-31 01:29:08</time>  <span class="categories">
    <a class='category' href='/category/storage.html'>storage</a>
  </span>
  <span class="categories">
    <a class="category" href="/tag/storage.html">storage</a>,    <a class="category" href="/tag/linux.html">linux</a>  </span>
</p><div class="sharing">
</div>    </footer>
  </article>

</div>

<aside class="sidebar">
<section>
  <h1>Recent Posts</h1>
  <ul id="recent_posts">
    <li class="post">
        <a href="/posts/2023/08/22/bash-conversion.html">bash进制转换</a>
    </li>
    <li class="post">
        <a href="/posts/2023/08/16/remap-caps-ctrl.html">在Linux下交换Ctrl与大写锁定键</a>
    </li>
    <li class="post">
        <a href="/posts/2023/08/15/learn-java.html">java入门精粹</a>
    </li>
    <li class="post">
        <a href="/posts/2023/08/04/tcl-expect.html">Tcl 和 expect教程</a>
    </li>
    <li class="post">
        <a href="/posts/2023/08/01/armbian-config-software.html">armbian-config 支持自动安装的软件</a>
    </li>
  </ul>
</section><section>
  <h1>Categories</h1>
    <ul id="recent_posts">
      <li><a href="/category/android.html">android (2)</a></li>
      <li><a href="/category/blog.html">blog (1)</a></li>
      <li><a href="/category/bootloader.html">bootloader (2)</a></li>
      <li><a href="/category/container.html">container (1)</a></li>
      <li><a href="/category/database.html">database (1)</a></li>
      <li><a href="/category/editor.html">editor (4)</a></li>
      <li><a href="/category/filesystem.html">filesystem (1)</a></li>
      <li><a href="/category/firefox.html">firefox (1)</a></li>
      <li><a href="/category/git.html">git (4)</a></li>
      <li><a href="/category/golang.html">golang (1)</a></li>
      <li><a href="/category/gu-piao.html">股票 (1)</a></li>
      <li><a href="/category/ide.html">IDE (1)</a></li>
      <li><a href="/category/interview.html">interview (1)</a></li>
      <li><a href="/category/linux.html">linux (51)</a></li>
      <li><a href="/category/network.html">network (7)</a></li>
      <li><a href="/category/nltk.html">nltk (2)</a></li>
      <li><a href="/category/notes.html">notes (1)</a></li>
      <li><a href="/category/other.html">other (1)</a></li>
      <li><a href="/category/programming.html">programming (10)</a></li>
      <li><a href="/category/python.html">python (1)</a></li>
      <li><a href="/category/software.html">software (1)</a></li>
      <li><a href="/category/stock.html">stock (1)</a></li>
      <li><a href="/category/storage.html">storage (2)</a></li>
      <li><a href="/category/vm.html">vm (1)</a></li>
      <li><a href="/category/web.html">web (4)</a></li>
      <li><a href="/category/windows.html">windows (1)</a></li>
      <li><a href="/category/xwindow.html">xwindow (1)</a></li>
  </ul>
</section>
<section>
  <h1>Tags</h1>
    <a href="/tag/linux.html">linux</a>,    <a href="/tag/bash.html">bash</a>,    <a href="/tag/xwindow.html">Xwindow</a>,    <a href="/tag/programming-language.html">programming-language</a>,    <a href="/tag/java.html">java</a>,    <a href="/tag/programming.html">programming</a>,    <a href="/tag/software.html">software</a>,    <a href="/tag/storage.html">storage</a>,    <a href="/tag/debug.html">debug</a>,    <a href="/tag/c.html">C</a>,    <a href="/tag/git.html">git</a>,    <a href="/tag/patch.html">patch</a>,    <a href="/tag/text.html">text</a>,    <a href="/tag/selenium.html">selenium</a>,    <a href="/tag/web.html">web</a>,    <a href="/tag/docker.html">docker</a>,    <a href="/tag/flatpak.html">flatpak</a>,    <a href="/tag/interview.html">interview</a>,    <a href="/tag/qt.html">Qt</a>,    <a href="/tag/opensuse.html">openSUSE</a>,    <a href="/tag/filesystem.html">filesystem</a>,    <a href="/tag/ide.html">IDE</a>,    <a href="/tag/glang.html">glang</a>,    <a href="/tag/xdg.html">xdg</a>,    <a href="/tag/network.html">network</a>,    <a href="/tag/raspberry.html">raspberry</a>,    <a href="/tag/vm.html">vm</a>,    <a href="/tag/windows.html">windows</a>,    <a href="/tag/gdb.html">gdb</a>,    <a href="/tag/debian.html">debian</a>,    <a href="/tag/archlinux.html">archlinux</a>,    <a href="/tag/phicomm.html">phicomm</a>,    <a href="/tag/kernel.html">kernel</a>,    <a href="/tag/ext4.html">ext4</a>,    <a href="/tag/server.html">server</a>,    <a href="/tag/stock.html">stock</a>,    <a href="/tag/shu.html">书</a>,    <a href="/tag/gu-piao.html">股票</a>,    <a href="/tag/python.html">python</a>,    <a href="/tag/nltk.html">nltk</a>,    <a href="/tag/command.html">command</a>,    <a href="/tag/shell.html">shell</a>,    <a href="/tag/terminal.html">terminal</a>,    <a href="/tag/other.html">other</a>,    <a href="/tag/wireless.html">wireless</a>,    <a href="/tag/android.html">android</a>,    <a href="/tag/gtk.html">gtk+</a>,    <a href="/tag/gnome.html">gnome</a>,    <a href="/tag/keyboard.html">keyboard</a>,    <a href="/tag/firefox.html">firefox</a>,    <a href="/tag/arch.html">arch</a>,    <a href="/tag/database.html">database</a>,    <a href="/tag/mysql.html">mysql</a>,    <a href="/tag/notes.html">notes</a>,    <a href="/tag/sysctl.html">sysctl</a>,    <a href="/tag/vim.html">vim</a>,    <a href="/tag/editor.html">editor</a>,    <a href="/tag/pelican.html">pelican</a>,    <a href="/tag/blog.html">blog</a>,    <a href="/tag/book.html">book</a>,    <a href="/tag/bootloader.html">bootloader</a></section>
    <section>
        <h1>Social</h1>
        <ul>
            <li><a href="https://github.com/zhangjiaxing" target="_blank">github</a></li>
            <li><a href="http://wpa.qq.com/msgrd?v=3&uin=347820393&site=qq&menu=yes" target="_blank">qq</a></li>
            <li><a href="http://www.writebug.cn" target="_blank">blog</a></li>
            <li><a href="http://gallery.writebug.cn" target="_blank">gallery</a></li>
        </ul>
    </section>
    <section>
        <h1>Blogroll</h1>
        <ul>
            <li><a href="http://getpelican.com/" target="_blank">Pelican</a></li>
        </ul>
    </section>

</aside>
    </div>
  </div>
  <footer role="contentinfo">
<p>
    Copyright &copy;  2013&ndash;2023  zhiliao &mdash;
  <span class="credit">Powered by <a href="http://getpelican.com">Pelican</a></span>
</p>  </footer>
</body>
</html>